const BaseController = require('../../../framework/controller/base_controller.js');
// 使用OA项目的统一配置入口
const OAModelsConfig = require('../config/models_config');
const { ResearchProjectModel, ResearchProjectFlowModel } = OAModelsConfig;
const ResearchProjectService = require('../service/research_project_service.js');
const util = require('../../../framework/utils/util.js');

class ResearchProjectController extends BaseController {
    
    /**
     * 初始化设置
     */
    async initSetup() {
        console.log('[OA-ResearchProjectController] initSetup called');
        // 此方法为PLM项目新增的初始化方法，OA项目中实现一个简单版本
        return true;
    }
    
    /**
     * 创建研发项目
     */
    async createProject() {
        // 参数校验
        console.log('[OA-ResearchProjectController] createProject called');
        console.log('请求数据:', JSON.stringify(this._request));
        
        try {
            // 将请求转发到PLM项目
            // 添加一条指导用户的日志信息
            console.log('[OA-ResearchProjectController] 请注意: 研发项目功能已迁移到PLM项目，请确保requests中的PID为"plm"');
            
            // 创建一个临时响应
            return {
                code: 0,
                msg: '请使用PLM项目API创建研发项目',
                data: {
                    redirectToPLM: true,
                    originalParams: this._request
                }
            };
        } catch (error) {
            console.error('[OA-ResearchProjectController] 错误:', error);
            return {
                code: -1,
                msg: '处理失败:' + error.message,
                data: {}
            };
        }
    }
    
    /**
     * 创建研发项目（原方法保留，便于兼容旧接口）
     */
    async createResearchProject() {
        // 参数校验
        await this.isAdmin();
        
        // 数据校验
        let rules = {
            name: 'required|string|min:2|max:50',
            startDate: 'required|date',
            endDate: 'required|date',
            desc: 'string|max:200',
        };
        
        // 取得数据
        let input = this.validateData(rules);
        
        // 调用服务
        let service = new ResearchProjectService();
        let result = await service.createResearchProject(input);
        
        // 返回结果
        return this.success(result);
    }
}

module.exports = ResearchProjectController;